﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using BusinessRules;

public partial class ContratosCargue : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ButtonUploadFile_Click(object sender, EventArgs e)
    {
        if (FileUploadExcel.HasFile)
        {
            //BussinesRulesPresupuesto.ModificadoresPreciosVenta objModificadoresPreciosVenta = new BussinesRulesPresupuesto.ModificadoresPreciosVenta(ConfigurationManager.AppSettings["Conn"]);
            int intContador = 0;
            try
            {
                DataSet objDataSet = ExcelImport.ImportExcelXLS(FileUploadExcel.PostedFile, true);
                if (objDataSet.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow objRowExcel in objDataSet.Tables[0].Rows)
                    {
                        intContador++;

                        //consulta si existe en la tabla en numero de cdp relacionado con el compromiso
                        BusinessRules.Contratacion objContratacion = new BusinessRules.Contratacion(ConfigurationManager.AppSettings["Conn"]);
                        double douValorCompromiso = 0;
                        double douValorObligacion = 0;

                        DataTable objDataTable =
                            objContratacion.BuscarNumeroCdpNmeroCompromiso(objRowExcel["FAE_NUMERO_CDP"].ToString(),
                                                                           objRowExcel["CTT_NUMERO_COMPROMISO"].ToString(), objRowExcel["CODIGO_RUBRO"].ToString());
                        douValorCompromiso = Convert.ToDouble(objRowExcel["CTT_VALOR_CONTRATO"].ToString());
                        douValorObligacion = Convert.ToDouble(objRowExcel["CTT_VALOR_OBLIGACION"].ToString());

                        #region encontro fae_id,numero_compromiso, codigo_rubro

                        if (objDataTable.Rows.Count > 0)
                        {
                            foreach (DataRow objRowb in objDataTable.Rows)
                            {
                               
                                //el valor del compromiso es mayor que el valor del cdp
                                if (douValorCompromiso > Convert.ToDouble(objRowb["FAE_VALOR_CDP"].ToString()))
                                {

                                    double strValorObligacionTemp;

                                    //--------------------OJO VALIDAR-----------------------
                                    if (douValorObligacion > Convert.ToDouble(objRowb["FAE_VALOR_CDP"].ToString()))
                                    {
                                        douValorObligacion = douValorObligacion - Convert.ToDouble(objRowb["FAE_VALOR_CDP"].ToString());
                                        strValorObligacionTemp =
                                            Convert.ToDouble(objRowb["FAE_VALOR_CDP"].ToString());
                                        
                                    }
                                    else
                                    {
                                        strValorObligacionTemp = douValorObligacion;
                                        douValorObligacion = 0;
                                    }

                                    // guarda el valor del cdp
                                    objContratacion.ActualizarContratacionFinAccionEpValor(objRowb["CFE_ID"].ToString(), objRowb["FAE_VALOR_CDP"].ToString(), strValorObligacionTemp.ToString());
                                    douValorCompromiso = douValorCompromiso - Convert.ToDouble(objRowb["FAE_VALOR_CDP"].ToString());

                                }

                                else if (douValorCompromiso <= Convert.ToDouble(objRowb["FAE_VALOR_CDP"].ToString()))
                                {
                                    objContratacion.ActualizarContratacionFinAccionEpValor(objRowb["CFE_ID"].ToString(),
                                                                                           douValorCompromiso.ToString(), douValorObligacion.ToString());
                                    douValorCompromiso = 0;
                                    douValorObligacion = 0;
                                }
                            }

                        }
                            #endregion

                        else
                        {
                            DataTable objDataTableSalida =
                                objContratacion.BuscarNumeroFeidXNumeroCdp(objRowExcel["FAE_NUMERO_CDP"].ToString(), objRowExcel["CODIGO_RUBRO"].ToString());


                            foreach (DataRow objRowSalida in objDataTableSalida.Rows)
                            {
                                

                                //el valor del compromiso es mayor que el valor del cdp
                                if (douValorCompromiso > Convert.ToDouble(objRowSalida["FAE_VALOR_CDP"].ToString()))
                                {
                                    // guarda el valor del cdp
                                    double strValorObligacionTemp;

                                    //--------------------OJO VALIDAR-----------------------
                                    if (douValorObligacion > Convert.ToDouble(objRowSalida["FAE_VALOR_CDP"].ToString()))
                                    {
                                        douValorObligacion = douValorObligacion - Convert.ToDouble(objRowSalida["FAE_VALOR_CDP"].ToString());
                                        strValorObligacionTemp =
                                            Convert.ToDouble(objRowSalida["FAE_VALOR_CDP"].ToString());
                                        //ACTUALIZAR
                                    }
                                    else
                                    {
                                        strValorObligacionTemp = douValorObligacion;
                                        douValorObligacion = 0;
                                    }

                                    //INSERT
                                    objContratacion.adicionarContratacionFinaccioEpCompromiso(
                                    objRowSalida["FAE_ID"].ToString(), objRowExcel["CTT_NUMERO_COMPROMISO"].ToString(),
                                    objRowSalida["FAE_VALOR_CDP"].ToString(), strValorObligacionTemp.ToString());                 
                                    douValorCompromiso = douValorCompromiso - Convert.ToDouble(objRowSalida["FAE_VALOR_CDP"].ToString());



                                    

                                }

                                else if (douValorCompromiso <= Convert.ToDouble(objRowSalida["FAE_VALOR_CDP"].ToString()) && douValorCompromiso != 0)
                                {
                                    //objContratacion.ActualizarContratacionFinAccionEpValor(objRowb["CFE_ID"].ToString(),
                                    //                                       douValorCompromiso.ToString());

                                    //Consultar  que no exista el numero de CDP con el  numero de compromiso
                                    DataTable objDataTableLocal =
                            objContratacion.BuscarNumeroCdpNmeroCompromisoxFaeId(objRowExcel["FAE_NUMERO_CDP"].ToString(),
                                                                           objRowExcel["CTT_NUMERO_COMPROMISO"].ToString(), objRowExcel["CODIGO_RUBRO"].ToString(), objRowSalida["FAE_ID"].ToString());
                                    if (objDataTableLocal.Rows.Count == 0)
                                    {
                                        objContratacion.adicionarContratacionFinaccioEpCompromiso(
                                   objRowSalida["FAE_ID"].ToString(), objRowExcel["CTT_NUMERO_COMPROMISO"].ToString(),
                                   douValorCompromiso.ToString(), douValorObligacion.ToString());
                                    douValorCompromiso = 0;
                                    douValorObligacion = 0;
                                   }
                                }




                            }
                            //no existe por tanto busca el fae_id correspondiente al CDP y agrega FAE_ID, FAE_NUMERO_COMPORMISO Y VALOR_TOTAL 
                            //busca el numero de CDP
                        }
                    }
                    LabelUpload.Text = objDataSet.Tables[0].Rows.Count.ToString();
                    //objModificadoresPreciosVenta.AgregarModificadoresPreciosVentaConTransacciones(objDataSet.Tables[0]);
                }

                //BindDatos();

            }
            catch (Exception ex)
            {
                LabelUpload.Text = "Error: " + ex.Message;
            }
        }
    }
    protected void ASPxButton3_Click(object sender, EventArgs e)
    {
        ASPxGridView1.Selection.SelectAll();
    }
    protected void ASPxButton4_Click(object sender, EventArgs e)
    {
        ASPxGridView1.Selection.UnselectAll();
    }
    protected void btnBorrar_Click(object sender, EventArgs e)
    {

    }
}
